package top.pengdong.pictureShare.file.service.Impl;

import cn.hutool.core.img.ImgUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.coobird.thumbnailator.Thumbnails;
import org.springframework.stereotype.Service;
import top.pengdong.pictureShare.file.dao.FileMapper;
import top.pengdong.pictureShare.file.pojo.PsFile;
import top.pengdong.pictureShare.file.service.FileService;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


/**
 * @description:
 * @projectName: pictureShare
 * @see: top.pengdong.pictureShare.file.service.Impl
 * @author: pc
 * @createTime: 2022/4/20 18:53
 * @version: 1.0
 */
@Service
public class FileServiceImpl extends ServiceImpl<FileMapper, PsFile> implements FileService {
	@Override
	public void addLogo(File file) throws IOException {
		BufferedImage image = ImageIO.read(file);
		ImgUtil.pressText(//
				file, //
				file, //
				"PictureShare@版权所有", Color.WHITE, //文字
				new Font("黑体", Font.BOLD, image.getHeight() / 20), //字体
				0, //x坐标修正值。 默认在中间，偏移量相对于中间偏移
				image.getHeight() / 2 - image.getHeight() / 20, //y坐标修正值。 默认在中间，偏移量相对于中间偏移
				0.5f//透明度：alpha 必须是范围 [0.0, 1.0] 之内（包含边界值）的一个浮点数字
		);
	}

	// 压缩图片将比例降低到 3m 以内
	@Override
	public void compress(File file) throws IOException {
		if (file.length() / 1024 > 1024 * 3) {
			Thumbnails.of(file)
					.scale(1f) //图片大小（长宽）压缩比例 从0-1，1表示原图
					.outputQuality(1024 * 1024 * 3 / file.length()) //图片质量压缩比例 从0-1，越接近1质量越好
					.toOutputStream(new FileOutputStream(file));
		}
	}
}
